---
id: js-publishing
title: Publishing Your Plugin
sidebar_label: Publishing Your Plugin
---
import useBaseUrl from '@docusaurus/useBaseUrl';
import Link from '@docusaurus/Link';

<FbInternalOnly>

The process of releasing plugins is largely automated at Meta. For details, see the <Link to={useBaseUrl('/docs/extending/fb/desktop-plugin-releases')}>Desktop Plugin Releases</Link> page.

</FbInternalOnly>

<OssOnly>

Once you're happy with your plugin and want the world to see it, you can publish it to npm.

Before publishing, ensure that your plugin complies with the following rules:

* The package name should start with 'flipper-plugin-'. This makes it easier to see the purpose of the package.
* The package must include the keyword 'flipper-plugin'.
* Source code of the plugin must be bundled by 'flipper-pkg' tool.

A valid example `package.json` could look like the following:

```json
{
  "$schema": "https://fbflipper.com/schemas/plugin-package/v2.json",
  "name": "flipper-plugin-sea-mammals",
  "id": "sea-mammals",
  "version": "2.0.0",
  "main": "dist/bundle.js",
  "flipperBundlerEntry": "src/index.tsx",
  "license": "MIT",
  "keywords": ["flipper-plugin"],
  "icon": "apps",
  "title": "Sea Mammals",
  "category": "Example Plugin",
  "scripts": {
    "prepack": "flipper-pkg lint && flipper-pkg bundle"
  },
  "dependencies": {
    "flipper": "latest"
  },
  "devDependencies": {
    "flipper-pkg": "latest"
  }
}
```

When you have confirmed that your `package.json` is correct, run `yarn publish` or `npm publish` and follow the instructions.

## Installing Plugins

Once your plugin is published you can find it, alongside other available Flipper plugins, by clicking on 'Manage Plugins...' in the bottom of the left sidebar and selecting the 'Install Plugins' tab.
It may take a few moments for the search index to update and your plugin to appear.

<img alt="Install plugins" src={useBaseUrl("img/install-plugins.png")} />

## Native Distribution

Depending on whether the client-side part of your plugin targets Android, iOS or React Native, it's recommended you use the standard package distribution mechanism for the platform.
This may be Maven Central, JCenter or GitHub Packages for Android, CocoaPods for iOS and npm or GitHub Packages for React Native.

Make sure to leave setup instructions in the README of your npm package.

</OssOnly>
